package ru.niir.goodfil.ui;

import com.sun.rave.web.ui.appbase.AbstractSessionBean;
import ru.niir.goodfil.db.Order;
import ru.niir.goodfil.db.OrderItem;
import ru.niir.goodfil.db.handlers.Goodfil;
import ru.niir.goodfil.utils.filters.OrdersFilter;

import java.util.List;

/**
 * Сессионный бин для работы с заказами.
 * Хранит информацию, которую необходимо кэшировать, т.е. хранить внутри сессии
 */
public class OrdersSessionBean extends AbstractSessionBean
{
    /**Объект для работы с БД*/
    private Goodfil gf;
    /**Перечень кэшированных заказов*/
    private List<Order> orders;
    /**Текущий выбранный заказ*/
    private Order order;
    /**Элементы текущего заказа*/
    private List<OrderItem> items;

    private synchronized Goodfil gf()
    {
        return gf;
    }

    /**
     * В процессе инициализации получается объект для работы с БД
     */
    public OrdersSessionBean() {
        gf = ((SessionBean)getBean("SessionBean")).getGoodfil();
        assert gf != null;
    }

    /**
     * Получить список заказов, имеющихся в системе.
     * Ленивая загрузка.
     * @return список заказов
     */
    public List<Order> getOrders() {
        if (orders == null) orders = gf().getOrders(0, Integer.MAX_VALUE, new OrdersFilter());
        return orders;
    }
}
